口袋理财 面试题 阶乘
去口袋理财面试,面试官让写个 N (N-1) (N-2) (N-3) (1) 这个算法。要求不用循环 for, foreach ,while 不能用。 我就想到了goto 和 递归。 但是不太确定PHP有没有goto,记得好像有但是忘记怎么写的了。我就回答了递归。 他就让我写出来。 我写了 递归是带两个参数的,写到一半感觉要点问题。他说为什么要2个参数啊?,结果我一想,面试官说的应该是对的,我就只带了一个参数,结果没写出来,他就让我走了。 回去后。我就想了怎么写。 下面就是我的代码 goto一个
function AAA($n)
{
$b = $n;
b:
if ($n != 1 && $n >0) {
$n = $n – 1;
echo $n.'–'.$b;
$b = $b * $n;
goto b;
}
echo '结果:';
return $b ;
}
echo AAA(5);
递归一个
function BBB($n,$b=0)
{
if (empty($b)) {
$b = $n;
}
if ($n != 1 && $n >0) {
$n = $n-1;
echo $n.'–'.$b.'–';
$b = $b * $n;
return BBB($n,$b);
}
else {
echo '结果:';
return $b;
}
}
echo BBB(5);
坑人不偿命啊!
都怪本宝宝不聪明,唉~